package com.taven.algorithm;

public class JavaAlgorithm {

	public static void main(String[] args) {
		
		/**
		 * 
		 * 常用算法 时间复杂度
		 * 
		 * 冒泡排序	O(n2)
		 * 快速排序	O(n2)
		 * 选择排序	O(n2)
		 * 二叉树排序	O(n2)
		 * 插入排序	O(n2)
		 * 堆排序	O(n*log2n)
		 * 希尔排序	O
		 * 
		 * 
		 * 常用算法 空间复杂度
		 * 
		 * 冒泡排序	O(1)
		 * 快速排序	O(log2n)~O(n)
		 * 选择排序	O(1)
		 * 二叉树排序	O(n)
		 * 插入排序	O(1)
		 * 堆排序	O(1)
		 * 希尔排序	O(1)
		 */
		
		
		/**
		 * 排序算法的分类如下： 
		 * 
		 * 插入排序（直接插入排序、折半插入排序、希尔排序）
		 * 交换排序（冒泡泡排序、快速排序）
		 * 选择排序（直接选择排序、堆排序）
		 * 归并排序
		 * 基数排序
		 * 
		 */
		
		/**
		 * 关于排序方法的选择： 
		 * 
		 * 若n较小(如n≤50)，可采用直接插入或直接选择排序。 
		 * 当记录规模较小时，直接插入排序较好；否则因为直接选择移动的记录数少于直接插人，应选直接选择排序为宜。 
		 * 
		 * 若文件初始状态基本有序(指正序)，则应选用直接插人、冒泡或随机的快速排序为宜； 
		 * 
		 * 若n较大，则应采用时间复杂度为O(nlgn)的排序方法：快速排序、堆排序或归并排序。 
		 * 
		 */
		
	}
	
	
}
